package br.com.toscano.contpedido.persistence;

import java.util.List;

import javax.persistence.Query;

import br.com.toscano.contpedido.domain.Usuario;
import br.gov.frameworkdemoiselle.stereotype.PersistenceController;
import br.gov.frameworkdemoiselle.template.JPACrud;

@PersistenceController
public class UsuarioDAO extends JPACrud<Usuario, Long> {

	private static final long serialVersionUID = 1L;

	public Usuario logar(String login, String senha) {
		Query q = createQuery("from " + Usuario.class.getSimpleName() + " obj where obj.login = :login and obj.senha = :senha " );
//		Query q = createQuery("from " + Usuario.class.getSimpleName() + " obj inner join fetch obj.listaPerfil perfil  inner join fetch obj.listaPerfil.listaUnidadeOrcamentaria unidadeOrcamentaria inner join fetch obj.listaPerfil.listaFuncionalidade funcionalidade where obj.login = :login and obj.senha = :senha " );		
		q.setParameter("login", login);
		q.setParameter("senha", senha);
		List<Usuario> lista = q.getResultList();
		if (lista != null && lista.size()>0) 
			return lista.iterator().next();
		return null;
	}
	
	public Usuario verificaExistenciaLogin(String login) {
		Query q = createQuery("from " + Usuario.class.getSimpleName() + " obj where obj.login = :login" );
		q.setParameter("login", login);
		List<Usuario> lista = q.getResultList();
		if (lista != null && lista.size()>0) 
			return lista.iterator().next();
		return null;
	}
	
	public Usuario verificaExistenciaEmail(String email) {
		Query q = createQuery("from " + Usuario.class.getSimpleName() + " obj where obj.email = :email" );
		q.setParameter("email", email);
		List<Usuario> lista = q.getResultList();
		if (lista != null && lista.size()>0) 
			return lista.iterator().next();
		return null;
	}
}